package com.qf.day10.homework;

import java.util.Arrays;

/**
 * 解析url
 * 写一个方法，返回url中的所有参数的参数名
 * 例如，对于 url = "http://www.baidu.com/s?tn=json&word=onepiece&rn=10"
 * 返回： [tn, word, rn]
 */
public class Homework01 {

    public static void main(String[] args) {
        String url = "https://www.baidu.com/s?tn=json&word=onepiece&rn=10";
        String[] nameArr = parseParamNames(url);
        System.out.println(Arrays.toString(nameArr));
    }

    public static String[] parseParamNames(String url) {
        if(url == null){
            return null;
        }
        String[] split = url.split("\\?");
        //转义字符  把?转成可分割的?然后进行分割
        // 数组里有两组数据
        // split[0]为"https://www.baidu.com/s"
        //split[1]为"tn=json&word=onepiece&rn=10"
        String[] result = new String[1]; //构建一个新数组用来接收结果
        int count=0; //计数器
        if(split.length>=2){
            String arr = split[1];//当数组长度大于等于2,创建新数组取 第二组数据 即"tn=json&word=onepiece&rn=10"
            String[] split1 = arr.split("&"); //再次用&进行分割  结果为"tn=json&word=onepiece&rn=10"
            for (int j = 0; j < split1.length; j++) {
                String s = split1[j];//利用循环  分别得出"tn=json" "word=onepiece" "rn=10"
                String[] split2 = s.split("=");//再次用=进行分割
                for (int i = 0; i < split2.length; i+=2) { //每次循环只要数组的第0,2,4 位 即tn, word, rn
                    if(count == result.length){
                        result = Arrays.copyOf(result,result.length+1);//如果数组满了 则扩容1位
                    }
                    result[count++] = split2[i]; //用result数组接收数据
                }
            }
        }else {
            return null;  //如果空则错误
        }
        return result; //返回新数组
    }

}
